package com.zhava.crawler.client.response;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
import java.util.Map;

/**
 * 爬虫响应结果
 *
 * @author zhaxiang
 */
@Data
@Schema(description = "爬虫响应结果")
public class CrawlerResponse {

    /**
     * 请求URL
     */
    @Schema(description = "原始请求URL")
    private String sourceUrl;

    /**
     * 爬取状态码
     */
    @Schema(description = "爬取状态码，200表示成功，4xx或5xx表示失败")
    private Integer statusCode;

    /**
     * 爬取结果
     */
    @Schema(description = "爬取的原始HTML内容")
    private String content;

    /**
     * 提取的数据
     */
    @Schema(description = "根据选择器提取的数据")
    private Object extractedData;

    /**
     * 页面中提取的链接
     */
    @Schema(description = "页面中提取的链接列表")
    private List<String> extractedLinks;

    /**
     * 爬取时间（毫秒）
     */
    @Schema(description = "爬取耗时（毫秒）")
    private Long crawlTime;

    /**
     * 元数据信息
     */
    @Schema(description = "爬取过程中的元数据信息，如页面标题、内容类型等")
    private Map<String, String> metadata;

    /**
     * 错误信息，如果有
     */
    @Schema(description = "错误信息，仅在爬取失败时有值")
    private String errorMessage;
} 